ngl: Improve the coloring shader
authorMatthias Clasen <mclasen@redhat.com>
Sat, 13 Mar 2021 23:04:26 +0000 (18:04 -0500)
committerMatthias Clasen <mclasen@redhat.com>
Sun, 14 Mar 2021 20:49:31 +0000 (16:49 -0400)
Since we are now passing a float anyway, we can avoid
the branch in the fragment shader.

gsk/ngl/resources/coloring.glsl

index 15e8203b8a0963a72c126882fd928d2a17bdbaa3..007c54d562d61356b1918fda36ae2e2ee6263e7f 100644 (file)
@@ -12,7 +12,7 @@ void main() {
   // We use this shader for both plain glyphs (used as mask)
   // and color glpyhs (used as source). The renderer sets
   // aColor to vec4(-1) for color glyhs.
-  if (distance(aColor, vec4(-1)) < 0.001)
+  if (distance(aColor,vec4(-1)) < 0.1)
     use_color = 0.0;
   else
     use_color = 1.0;
@@ -29,8 +29,5 @@ _IN_ float use_color;
 void main() {
   vec4 diffuse = GskTexture(u_source, vUv);
 
-  if (use_color > 0.0)
-    gskSetOutputColor(final_color * diffuse.a);
-  else
-    gskSetOutputColor(diffuse * u_alpha);
+  gskSetOutputColor(mix(diffuse * u_alpha, final_color * diffuse.a, use_color));
 }